#include<bits/stdc++.h>
using namespace std;
const int N=100000+5;
int t,m,n,l,vli,cnt,d[N],v[N],a[N],p[N],maxp,ans,cnt2;
bool et[1000005];
int main(){
	freopen("detect.in","r",stdin);
	freopen("detect.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>m>>l>>vli;
		cnt=0;
		cnt2=0;
		ans=0;
		memset(et,0,sizeof(et));
		for(int i=1;i<=n;i++){
			scanf("%d%d%d",&d[i],&v[i],&a[i]);
			if(a[i]==0){
				cnt++;
				if(v[i]<=vli)
					continue;
				else
					et[i]=true;
			}
			if(a[i]>0){
				cnt2++;
				if(v[i]>=vli)
					et[i]=true;
				else{
					d[i]+=((vli*vli)-(v[i]*v[i]))/(a[i]*2)+1;
					if(d[i]<=l)
						et[i]=true;
				}
			}
		}
		for(int i=1;i<=m;i++){
			scanf("%d",&p[i]);
			if(i==m)
				maxp=p[i];
		}
		if(cnt==n){
			for(int i=1;i<=n;i++)
				if(et[i]==true&&d[i]<=maxp)
					ans++;
			if(ans==0)
				printf("%d %d\n",ans,m);
			else
				printf("%d %d\n",ans,m-1);
		}
		if(cnt2==n){
			for(int i=1;i<=n;i++)
				if(et[i]==true&&d[i]<=maxp)
					ans++;
			if(ans==0)
				printf("%d %d\n",ans,m);
			else
				printf("%d %d\n",ans,m-1);
		}
	}
	return 0;
}
